home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 June / CHIP Haziran 2001.iso / prog / share / 04 / setup.exe / MM6.Cab / F1745_SequenceMain.scpt.F6A680DD_F3FB_4CF3_BABB_0D0F06E630F5 < prev    next >
Text File  |  2000-08-17  |  6KB  |  143 lines

  1. CSSeqArray = new Array;
  2. function CSSeqActionFct(seq,loopCount,continueLoop) {
  3.     if ((seq.loop < 2) || ((loopCount % 2) != 0)) {
  4.         for (var i=0;i<seq.actionCount;i++) {
  5.             if (seq.actions[3*i + 1] <= seq.frame) {
  6.                 if ((loopCount > 1) && (seq.actions[3*i + 1] < seq.start)) continue;
  7.                 if (seq.actions[3*i + 2] < loopCount) {
  8.                     seq.actions[3*i + 2] = loopCount; CSLoopIsRunning = true;
  9.                     CSAction(new Array(seq.actions[3*i + 0])); continueLoop = true;
  10.                 }
  11.             } else { continueLoop = true; break; }
  12.         }
  13.     } else {
  14.         for (var i=seq.actionCount-1;i>=0;i--) {
  15.             if (seq.actions[3*i + 1] > seq.frame) {
  16.                 if (seq.actions[3*i + 1] > seq.end) continue;
  17.                 if (seq.actions[3*i + 2] < loopCount) {
  18.                     seq.actions[3*i + 2] = loopCount; CSLoopIsRunning = true;
  19.                     CSAction(new Array(seq.actions[3*i + 0])); continueLoop = true;
  20.                 }
  21.             } else { continueLoop = true; break; }
  22.         }
  23.     }
  24.     return continueLoop;
  25. }        
  26. function CSSeqFunction(fctInfo)
  27. {
  28.     var seq = fctInfo.data; var oldFrame = seq.frame;
  29.     var newTicks = (new Date()).getTime();
  30.     seq.frame = Math.round((seq.fps * (newTicks - seq.startTicks)/1000.0) - 0.5);
  31.     var continueLoop  = false; var loopCount = 1;
  32.     
  33.     if (seq.loop > 0) {
  34.         continueLoop = true;
  35.         if (seq.loop == 1) {
  36.             var iv = (seq.end - seq.start);
  37.             var f = Math.round(((seq.frame - seq.start) / iv) - 0.5);
  38.             if (f < 0) f = 0;
  39.             loopCount = f+1;
  40.             seq.frame = seq.start + ((seq.frame - seq.start) % (seq.end - seq.start));
  41.         } else {
  42.             var iv = (seq.end - seq.start);
  43.             var f = Math.round(((seq.frame - seq.start) / iv) - 0.5);
  44.             if (f < 0) f = 0;
  45.             loopCount = f+1;
  46.             f = (seq.frame - seq.start) % (2 * iv);
  47.             if (f > iv) f = 2*iv - f;
  48.             seq.frame = seq.start + f;
  49.         }
  50.     }
  51.     continueLoop = CSSeqActionFct(seq,loopCount,continueLoop);
  52.     for (var i=0;i<seq.tracks.length;i++) {
  53.         var track = seq.tracks[i]; var frameCount = 0; var lastCount = 0; var partCount = 0;
  54.         var partIdx = track.parts.ticks.length;
  55.         for (var k=0;k<track.parts.ticks.length;k++) {
  56.             frameCount += track.parts.ticks[k];
  57.             if (frameCount > seq.frame) { partIdx = k; partCount = seq.frame - lastCount; break; }
  58.             lastCount = frameCount;
  59.         }
  60.         if (partIdx < track.parts.ticks.length) {
  61.             var type=track.parts.moveType[partIdx];
  62.             if(type==1) CSSetLinearPos (track, partIdx, partCount);
  63.             else if(type==2) CSSetCurvePos (track, partIdx, partCount);
  64.             else if(type==3) if (oldFrame != seq.frame) CSSetRandomPos (track, partIdx, partCount);
  65.                              else { x = CSGetStylePos(track.layer,0); y = CSGetStylePos(track.layer,1); }
  66.             CSSetStyleVis(track.layer,track.parts.visibilities[partIdx]);
  67.             CSSetStyleDepth(track.layer,track.parts.depths[partIdx]);
  68.             continueLoop = true;
  69.         } else {
  70.             var partIdx = track.parts.moveType.length-1;
  71.             var posArray = track.parts.positions;
  72.             var x = posArray[partIdx * 6 + 0]; var y = posArray[partIdx * 6 + 1];
  73.             CSSetStylePos(track.layer,0,x); CSSetStylePos(track.layer,1,y);
  74.             CSSetStyleVis(track.layer,track.parts.visibilities[partIdx]);
  75.             CSSetStyleDepth(track.layer,track.parts.depths[partIdx]);
  76.         }
  77.     }
  78.     return continueLoop;
  79. }
  80. function CSSetLinearPos (track, partIdx, partCount) {
  81.     var curTicks = track.parts.ticks[partIdx];
  82.     var pIdx1 = partIdx * 6; var pIdx2 = (partIdx+1) * 6;
  83.     var posArray = track.parts.positions;
  84.     var x = posArray[pIdx1 + 0]; var y = posArray[pIdx1 + 1];
  85.     var x1,x2,y1,y2;
  86.     var factor = partCount/curTicks;
  87.     x1 = x; y1 = y;
  88.     x2 = posArray[pIdx2 + 0]; y2 = posArray[pIdx2 + 1];
  89.     x = x1 * (1-factor) + x2 * factor; y = y1 * (1-factor) + y2 * factor;
  90.     CSSetStylePos(track.layer,0,x); CSSetStylePos(track.layer,1,y);
  91. }
  92. function CSSetCurvePos (track, partIdx, partCount) {
  93.     var curTicks = track.parts.ticks[partIdx];
  94.     var pIdx1 = partIdx * 6; var pIdx2 = (partIdx+1) * 6;
  95.     var posArray = track.parts.positions;
  96.     var x = posArray[pIdx1 + 0]; var y = posArray[pIdx1 + 1];
  97.     var x1,x2,x3,x4,y1,y2,y3,y4;
  98.     var factor = partCount/curTicks;
  99.     var t = factor; var u = t * t; var v = u * t;
  100.     var val1 = 3*(u-t) - v + 1; var val2 = 3*(v+t - 2*u); var val3 = 3*(u-v); var val4 = v;
  101.     x1 = x; y1 = y; x2 = posArray[pIdx1 + 2]; y2 = posArray[pIdx1 + 3];
  102.     x3 = posArray[pIdx1 + 4]; y3 = posArray[pIdx1 + 5];
  103.     x4 = posArray[pIdx2 + 0]; y4 = posArray[pIdx2 + 1];
  104.     x = x1 * val1 + x2 * val2 + x3 * val3 + x4 * val4;
  105.     y = y1 * val1 + y2 * val2 + y3 * val3 + y4 * val4;
  106.     CSSetStylePos(track.layer,0,x); CSSetStylePos(track.layer,1,y);
  107. }
  108. function CSSetRandomPos (track, partIdx, partCount) {
  109.     var curTicks = track.parts.ticks[partIdx];
  110.     var pIdx1 = partIdx * 6; var pIdx2 = (partIdx+1) * 6;
  111.     var posArray = track.parts.positions;
  112.     var x = posArray[pIdx1 + 0]; var y = posArray[pIdx1 + 1];
  113.     var x1,x2,y1,y2;
  114.     var factor = partCount/curTicks;
  115.     x1 = x; y1 = y;
  116.     x2 = posArray[pIdx2 + 0]; y2 = posArray[pIdx2 + 1];
  117.     var factorx = Math.random(); var factory = Math.random();
  118.     x = x1 * (1-factorx) + x2 * factorx; y = y1 * (1-factory) + y2 * factory;
  119.     CSSetStylePos(track.layer,0,x); CSSetStylePos(track.layer,1,y);
  120. }
  121. function CSStartSeq(name) {
  122.     var seq = CSGetScene(name); var date = new Date()
  123.     seq.startTicks = date.getTime()
  124.     for (var i=0;i<seq.actionCount;i++) seq.actions[3*i+2] = 0;
  125.     CSStartFunction(CSSeqFunction,seq);
  126. }
  127. function CSSceneObj (name,fps,loop,start,end,frame,sTicks,numAct,acts,tracks) {
  128.     this.name=name;this.fps=fps;this.loop=loop;this.start=start;this.end=end;
  129.     this.frame=frame;this.startTicks=sTicks;this.actionCount=numAct;
  130.     this.actions=acts;this.tracks=tracks;
  131. }
  132. function CSTrackObj (name,partIdx,partCount,parts) {
  133.     this.layer=name;this.partIdx=partIdx;this.partCount=partCount;this.parts=parts;
  134. }
  135. function CSPartObj (ticks,pos,depths,vis,moveType) {
  136.     this.ticks=ticks;this.positions=pos;this.depths=depths;this.visibilities=vis;
  137.     this.moveType=moveType;
  138. }
  139. function CSGetScene (name) {
  140.     for (i=0;i<CSSeqArray.length;i++) { var seq = CSSeqArray[i]; if (seq.name==name) return seq; }
  141.     return 0;
  142. }
  143.